# ============================================================
# * Copyright © hk. 2022-2025. All rights reserved.
# * File name: CMakeLists.txt
# * Author   : 苏木
# * Date     : 2025-05-22
# * Version  : 
# * Description: cmake version 3.16.3
# ============================================================
## https://cmake.com.cn/cmake/help/latest/guide/tutorial/index.html
## https://cmake.org/cmake/help/latest/

# 指定 CMake 的最低版本要求
# --------------------------------------------------
cmake_minimum_required(VERSION 3.10)


# 设置项目名称和使用的编程语言
# --------------------------------------------------
project(SPROJECT C)


# 指定可执行程序和源文件
# --------------------------------------------------
add_executable(app_demo.out main.c)

# 正则表达式比较字符串
# --------------------------------------------------
# CMake还支持根据正则表达式比较字符串:if(value MATCHES regex)
# 同样遵循上面定义的变量或字符串规则，并与regex正则表达式进行比较。
# 如果匹配，则表达式的结果为True。虽然CMake文档没有为if()命令定义支持的正则表达式语法，但在其他地方定义了正则表达式语法(例如，参见string()命令)。
# 本质上，CMake支持基本的正则表达式语法。
# 括号可用于获取部分匹配值。命令将以CMAKE_MATCH_<n>的形式设置变量，其中<n>是要匹配的组。整个匹配的字符串存储在0组中。

set(TEST_STRING "Hello123World")    # 定义要测试的字符串
if(TEST_STRING MATCHES "[0-9]+")    # 使用正则表达式匹配数字
    message(STATUS "字符串包含数字: ${CMAKE_MATCH_0}")
else()
    message(STATUS "字符串不包含数字")
endif()

if(TEST_STRING MATCHES "^Hello[0-9]+World$")
    message(STATUS "字符串匹配完整模式")
else()
    message(STATUS "字符串不匹配完整模式")
endif()

# 使用正则表达式提取部分内容
if(TEST_STRING MATCHES "Hello([0-9]+)World")
    message(STATUS "提取的数字部分是: ${CMAKE_MATCH_1}")
endif()
message("")
